ヘッダーをスキップ
Oracle TimesTen In-Memory Database C開発者およびリファレンス・ガイド
リリース7.0
E05164-03
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

SQLパラメータのバインド

TimesTenでは、重複したパラメータを含むSQL文は解析されるため、異なるパラメータ名のみが別のパラメータとしてみなされます。バインドは、パラメータ名が最初に出現した位置に基づいて行われます。重複した各パラメータは同じ値にバインドされます。

次の問合せを考えてみます。

SELECT * FROM employees

  WHERE employee_id < :a AND manager_id > :a AND salary < :b;

Oracleでは、パラメータaが2回出現すると、別のパラメータとしてみなされます。ただし、Oracle Call Interface(OCI)では、aを両方ともOCIBindByPosへの1つのコールとバインドすることができます。

OCIBindByPos(..., 1, ...);    /* both occurrences of :a */

OCIBindByPos(..., 3, ...);    /* occurrence of :b */

また、OCIでは2つのaを別々にバインドすることもできます。

OCIBindByPos(..., 1, ...);    /* first occurrence of :a */

OCIBindByPos(..., 2, ...);    /* second occurrence of :a */

OCIBindByPos(..., 3, ...);    /* occurrence of :b */

両方の場合で、パラメータbは位置3に存在するとみなされていることに注意してください。

TimesTenでは、2つのaは1つのパラメータとみなされるため、別々にバインドできません。

SQLBindParameter(..., 1, ...);    /* both occurrences of :a */

SQLBindParameter(..., 2, ...);    /* occurrence of :b */

TimesTenでは、パラメータbは位置3ではなく、位置2に存在するとみなされることに注意してください。

SQLNumParams ODBC関数は、この例のパラメータ数の場合、2を返します。

また、OCIでは、OCIBindByNameを使用して位置ではなく、名前でバインドすることもできます。 TimesTen ODBCでは、名前によるパラメータのバインドをサポートしていません。